<!DOCTYPE html>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/testdriver.js"></script>
<script src="/resources/testdriver-vendor.js"></script>
<script src="../resources/orientation-event-helpers.js"></script>
<script>
'use strict';

function test_null_orientation_data(eventType) {
  promise_test(async t => {
    const helper = new SensorTestHelper(t, eventType);
    await helper.grantSensorsPermissions();
    await helper.initializeSensors(
        {disabledSensors : [ 'absolute-orientation', 'relative-orientation' ]});

    const inputData = generateOrientationData(1.1, 2.2, 3.3, false);
    // Currently it is not possible to set individual values to null because
    // the parsing algorithms used by
    // https://w3c.github.io/sensors/#update-virtual-sensor-reading-command
    // always expect numbers.
    const expectedData = generateOrientationData(
        null, null, null,
        /*absolute=*/ eventType === 'deviceorientationabsolute');
    const expectedEvent = eventType === 'deviceorientationabsolute'
                              ? getExpectedAbsoluteOrientationEvent
                              : getExpectedOrientationEvent;

    // An example how setting the orientation sensors as disabled will always
    // output null values.
    await helper.setData(inputData);
    await waitForEvent(expectedEvent(expectedData));
  }, `${eventType}: Missing values are set to null or true/false accordingly`);
}

test_null_orientation_data('deviceorientation');
test_null_orientation_data('deviceorientationabsolute');
</script>
